package cn.iocoder.yudao.module.system.controller.admin.examcontrolline.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

@Schema(description = "管理后台 - 学生报考建议 Response VO")
@Data
public class StudentAdmissionAdviceRespVO {

    @Schema(description = "学生基本信息")
    private StudentBasicInfo studentInfo;

    @Schema(description = "成绩换算结果")
    private ExamScoreConversionRespVO conversionResult;

    @Schema(description = "冲刺院校推荐")
    private List<CollegeRecommendationRespVO> reachColleges;

    @Schema(description = "稳妥院校推荐")
    private List<CollegeRecommendationRespVO> stableColleges;

    @Schema(description = "保底院校推荐")
    private List<CollegeRecommendationRespVO> safeColleges;

    @Schema(description = "热门专业推荐")
    private List<MajorRecommendationRespVO> popularMajors;

    @Schema(description = "适合专业推荐")
    private List<MajorRecommendationRespVO> suitableMajors;

    @Schema(description = "综合建议")
    private ComprehensiveAdvice comprehensiveAdvice;

    /**
     * 学生基本信息
     */
    @Data
    public static class StudentBasicInfo {
        @Schema(description = "学生ID", example = "1")
        private Long studentId;
        
        @Schema(description = "学生姓名", example = "张三")
        private String studentName;
        
        @Schema(description = "学号", example = "2024001")
        private String studentNo;
        
        @Schema(description = "班级名称", example = "高三(1)班")
        private String className;
        
        @Schema(description = "选科组合", example = "物理+化学+生物")
        private String subjectCombination;
    }

    /**
     * 综合建议
     */
    @Data
    public static class ComprehensiveAdvice {
        @Schema(description = "总体评价", example = "成绩优秀，有冲击顶尖院校的实力")
        private String overallEvaluation;
        
        @Schema(description = "志愿填报策略", example = "建议采用冲稳保策略，合理分配志愿")
        private String volunteerStrategy;
        
        @Schema(description = "专业选择建议", example = "建议选择理工科专业，符合学生特长")
        private String majorAdvice;
        
        @Schema(description = "注意事项")
        private List<String> precautions;
        
        @Schema(description = "提升建议")
        private List<String> improvementSuggestions;
        
        @Schema(description = "风险提示")
        private List<String> riskWarnings;
    }

}